// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener("DOMContentLoaded", () => {
  setTimeout(() => {
    document.body.classList.add("sidenav-pinned")
    document.body.classList.add("ready")
  }, 200)
})

// 每个页面都会导入该js 统一的设置写这里即可
axios.defaults.baseURL = "http://ajax-api.itheima.net"
const myToast = new bootstrap.Toast(document.querySelector("#myToast"), {
  delay: 2000,
})
// 封装了轻提示函数
function tip(msg) {
  // 修改提示内容
  document.querySelector(".toast-body").innerHTML = msg
  // 显示提示框
  myToast.show()
}
// 渲染用户名
const username = localStorage.getItem("username")
const span = document.querySelector(".font-weight-bold")
// 逻辑中断 && 前为真才会执行后面代码
span && (span.innerHTML = username)
// 退出功能

const logout = document.querySelector("#logout")
logout &&
  logout.addEventListener("click", function () {
    // 删除用户信息
    localStorage.removeItem("username")
    localStorage.removeItem("token")
    location.href = "./login.html"
  })
axios.interceptors.request.use(
  (config) => {
    config.headers.authorization = localStorage.getItem("token")
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  (res) => {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    // 1、数据剥离
    console.log(res)
    // res就是后端返回的数据 （已经 经过axios 包装过后的）
    return res.data
  },
  (error) => {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    // 2、处理错误信息
    // 但凡是token 的问题都会返回401状态，需要重新登录
    if (error.response.status === 401) {
      localStorage.removeItem("token")
      localStorage.removeItem("username")
      location.href = "./login.html"
    }
    return Promise.reject(error)
  }
)
